home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / propulsion / code.lua next >
Encoding:
Text File  |  2005-07-16  |  15.1 KB  |  441 lines

  1.  
  2. file_include('script/share/prog_border.lua')
  3.  
  4. -- -----------------------------------------------------------------
  5. -- Init
  6. -- -----------------------------------------------------------------
  7. local function prog_init()
  8.     initModels()
  9.     sound_playMusic("music/rybky14.ogg")
  10.     local pokus = getRestartCount()
  11.  
  12.     --NOTE: a final level
  13.     small:setGoal("goal_alive")
  14.     big:setGoal("goal_alive")
  15.     veve:setGoal("goal_out")
  16.  
  17.     -- -------------------------------------------------------------
  18.     local function prog_init_room()
  19.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  20.  
  21.         room.uvod = 0
  22.         room.oprojektu = random(10 * pokus) + 10 * pokus
  23.         room.oforme = random(1500) + 300
  24.         room.ohadce = random(3000) + 1000
  25.         room.obadva = 0
  26.         room.kteraprosba = 0
  27.  
  28.         return function()
  29.             if stdBorderReport() then
  30.                 addv(random(10) + 5, "poh-v-ukol")
  31.             end
  32.             if no_dialog() and isReady(big) and isReady(small) then
  33.                 if room.oprojektu > 0 then
  34.                     room.oprojektu = room.oprojektu - 1
  35.                 end
  36.                 if room.oforme > 0 then
  37.                     room.oforme = room.oforme - 1
  38.                 end
  39.                 if room.ohadce > 0 then
  40.                     room.ohadce = room.ohadce - 1
  41.                 end
  42.                 if room.uvod == 0 then
  43.                     room.uvod = 1
  44.                     adddel(10 + random(14))
  45.                     switch(pokus){
  46.                         [1] = function()
  47.                             pom1 = 3
  48.                         end,
  49.                         [2] = function()
  50.                             pom1 = random(2) + 1
  51.                         end,
  52.                         default = function()
  53.                             if random(100) < 30 then
  54.                                 pom1 = random(2) + 1
  55.                             end
  56.                         end,
  57.                     }
  58.                     if odd(pom1) then
  59.                         addv(5, "poh-v-takhle")
  60.                     end
  61.                     if pom1 >= 2 then
  62.                         addm(5, "poh-m-tosnadne")
  63.                     end
  64.                     if pom1 > 0 and random(100) < 100 / pokus then
  65.                         addv(10, "poh-v-biosila")
  66.                         if pokus == 1 or random(100) < 20 then
  67.                             addm(random(40) + 10, "poh-m-reaktor")
  68.                             addv(7, "poh-v-automat")
  69.                             addm(random(20) + 7, "poh-m-motor")
  70.                             addv(7, "poh-v-tocit")
  71.                         end
  72.                     end
  73.                 elseif room.oprojektu == 0 then
  74.                     room.oprojektu = -1
  75.                     switch(pokus){
  76.                         [1] = function()
  77.                             pom1 = 6
  78.                         end,
  79.                         [2] = function()
  80.                             pom1 = randint(4, 6)
  81.                         end,
  82.                         [3] = function()
  83.                             pom1 = randint(2, 6)
  84.                         end,
  85.                         [4] = function()
  86.                             pom1 = randint(1, 6)
  87.                         end,
  88.                         default = function()
  89.                             pom1 = randint(0, 6)
  90.                         end,
  91.                     }
  92.                     adddel(10)
  93.                     if pom1 >= 5 then
  94.                         addv(0, "poh-v-neuveri")
  95.                     end
  96.                     if pom1 >= 6 then
  97.                         addm(5, "poh-m-projekt")
  98.                     end
  99.                     if pom1 >= 1 then
  100.                         addv(10, "poh-v-zarizeni")
  101.                     end
  102.                     if pom1 >= 4 then
  103.                         addm(4, "poh-m-sest")
  104.                     end
  105.                     if pom1 >= 2 then
  106.                         addv(10, "poh-v-klec")
  107.                     end
  108.                     if pom1 >= 3 then
  109.                         addm(6, "poh-m-dobre")
  110.                     end
  111.                 elseif room.oforme == 0 then
  112.                     addv(20, "poh-v-forma")
  113.                     addm(3, "poh-m-princip")
  114.                     addv(random(30) + 10, "poh-v-pomoct")
  115.                     room.oforme = -1
  116.                 elseif (smutny.hybese == 1 or nasrany.hybese == 1) and small.dir ~= dir_no then
  117.                     if room.kteraprosba == 0 then
  118.                         room.kteraprosba = random(2) + 1
  119.                     else
  120.                         room.kteraprosba = 3 - room.kteraprosba
  121.                     end
  122.                     addm(0, "poh-m-dobryden"..(room.kteraprosba - 1))
  123.                     if smutny.hybese == 1 then
  124.                         smutny.hybese = 2
  125.                     end
  126.                     if nasrany.hybese == 1 then
  127.                         nasrany.hybese = 2
  128.                     end
  129.                 elseif room.ohadce == 0 then
  130.                     room.ohadce = random(5000) + 2000
  131.                     planSet(room, "obadva", 1)
  132.                     adddel(random(100) + 50)
  133.                     addm(0, "poh-m-pohadali")
  134.                     if random(100) < 60 then
  135.                         addv(10, "poh-v-setkani")
  136.                         if random(100) < 60 then
  137.                             addm(5, "poh-m-sestra")
  138.                         end
  139.                     end
  140.                     adddel(random(100) + 50)
  141.                     planSet(room, "obadva", 0)
  142.                 end
  143.             end
  144.         end
  145.     end
  146.  
  147.     -- -------------------------------------------------------------
  148.     local function prog_init_veve()
  149.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  150.  
  151.         veve.cinnost = 0
  152.         veve.vydrz = random(200) + 200
  153.  
  154.         return function()
  155.             switch(veve.cinnost){
  156.                 [0] = function()
  157.                     if 8 <= veve.afaze and veve.afaze <= 10 then
  158.                         veve.afaze = veve.afaze + 1
  159.                     else
  160.                         veve.afaze = 8
  161.                     end
  162.                     if veve.vydrz > 0 then
  163.                         veve.vydrz = veve.vydrz - 1
  164.                     else
  165.                         veve.cinnost = 1
  166.                         veve.vydrz = 15 + random(20)
  167.                     end
  168.                 end,
  169.                 [1] = function()
  170.                     if odd(game_getCycles()) then
  171.                         switch(veve.afaze){
  172.                             [6] = function()
  173.                                 veve.afaze = 7
  174.                             end,
  175.                             default = function()
  176.                                 veve.afaze = 6
  177.                             end,
  178.                         }
  179.                     end
  180.                     if veve.vydrz > 0 then
  181.                         veve.vydrz = veve.vydrz - 1
  182.                     else
  183.                         veve.cinnost = 2
  184.                         veve.vydrz = 20 + random(25)
  185.                     end
  186.                 end,
  187.                 [2] = function()
  188.                     if math.mod(game_getCycles(), 4) == 0 then
  189.                         switch(veve.afaze){
  190.                             [6] = function()
  191.                                 veve.afaze = 7
  192.                             end,
  193.                             default = function()
  194.                                 veve.afaze = 6
  195.                             end,
  196.                         }
  197.                     end
  198.                     if veve.vydrz > 0 then
  199.                         veve.vydrz = veve.vydrz - 1
  200.                     else
  201.                         veve.cinnost = 3
  202.                         veve.vydrz = random(400) + 50
  203.                         veve.kouka = 0
  204.                         veve.makoukat = 0
  205.                     end
  206.                 end,
  207.                 [3] = function()
  208.                     if random(100) < 5 then
  209.                         veve.makoukat = random(3)
  210.                     end
  211.                     if veve.kouka ~= veve.makoukat then
  212.                         if veve.makoukat == 0 or veve.kouka == 0 then
  213.                             veve.kouka = veve.makoukat
  214.                         else
  215.                             veve.kouka = 0
  216.                         end
  217.                     end
  218.                     veve.afaze = 2 * veve.kouka
  219.                     if random(100) < 5 then
  220.                         veve.afaze = veve.afaze + 1
  221.                     end
  222.                     if veve.vydrz > 0 then
  223.                         veve.vydrz = veve.vydrz - 1
  224.                     else
  225.                         veve.cinnost = 0
  226.                         veve.vydrz = random(300) + 100
  227.                     end
  228.                 end,
  229.             }
  230.             veve:updateAnim()
  231.         end
  232.     end
  233.  
  234.     -- -------------------------------------------------------------
  235.     local function prog_init_bublik()
  236.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  237.  
  238.         bublik.bublat = -random(30) - 10
  239.  
  240.         return function()
  241.             if bublik.bublat > 0 then
  242.                 pom1 = random(2) + 1
  243.                 if pom1 == bublik.afaze then
  244.                     bublik.afaze = 3
  245.                 else
  246.                     bublik.afaze = pom1
  247.                 end
  248.             else
  249.                 bublik.afaze = 0
  250.             end
  251.             if bublik.bublat > 0 then
  252.                 bublik.bublat = bublik.bublat - 1
  253.                 if bublik.bublat == 0 then
  254.                     bublik.bublat = -10 - random(30)
  255.                 end
  256.             elseif bublik.bublat < 0 then
  257.                 bublik.bublat = bublik.bublat + 1
  258.                 if bublik.bublat == 0 then
  259.                     bublik.bublat = 10 + random(30)
  260.                 end
  261.             end
  262.             bublik:updateAnim()
  263.         end
  264.     end
  265.  
  266.     -- -------------------------------------------------------------
  267.     local function prog_init_hadice()
  268.         return function()
  269.             if odd(game_getCycles()) and veve.cinnost == 0 and hadice.X + 2 == veve.X and hadice.Y == veve.Y + 1 and hadice.X == bublik.X + 1 and hadice.Y + 3 == bublik.Y then
  270.                 hadice.afaze = 1 - hadice.afaze
  271.             end
  272.             hadice:updateAnim()
  273.         end
  274.     end
  275.  
  276.     -- -------------------------------------------------------------
  277.     local function prog_init_nasrany()
  278.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  279.  
  280.         nasrany.nohy = random(2) * 2
  281.         nasrany.vyraz = random(4)
  282.         nasrany.kamjde = nasrany.nohy
  283.         nasrany.hybese = 0
  284.  
  285.         return function()
  286.             switch(nasrany.hybese){
  287.                 [0] = function()
  288.                     if nasrany.dir ~= dir_no then
  289.                         nasrany.hybese = nasrany.hybese + 1
  290.                     end
  291.                 end,
  292.                 [1] = function()
  293.                     if nasrany.dir == dir_no then
  294.                         nasrany.hybese = nasrany.hybese + 1
  295.                     end
  296.                 end,
  297.             }
  298.             if room.obadva == 1 then
  299.                 nasrany.vyraz = 3
  300.                 if nasrany.nohy == 1 then
  301.                     nasrany.nohy = nasrany.kamjde
  302.                 end
  303.             else
  304.                 if nasrany.kamjde ~= nasrany.nohy then
  305.                     if nasrany.kamjde == 1 or nasrany.nohy == 1 then
  306.                         nasrany.nohy = nasrany.kamjde
  307.                     else
  308.                         nasrany.nohy = 1
  309.                     end
  310.                 elseif math.mod(game_getCycles(), 3) == 0 and random(100) < 9 then
  311.                     nasrany.vyraz = random(4)
  312.                 end
  313.                 if nasrany.vyraz ~= 4 and random(100) < 1 and not odd(nasrany.nohy) then
  314.                     nasrany.kamjde = 2 - nasrany.nohy
  315.                 end
  316.             end
  317.             switch(nasrany.nohy){
  318.                 [0] = function()
  319.                     nasrany.afaze = nasrany.vyraz
  320.                 end,
  321.                 [1] = function()
  322.                     nasrany.afaze = 4 + nasrany.vyraz
  323.                 end,
  324.                 [2] = function()
  325.                     nasrany.afaze = 7 + nasrany.vyraz
  326.                 end,
  327.             }
  328.             nasrany:updateAnim()
  329.         end
  330.     end
  331.  
  332.     -- -------------------------------------------------------------
  333.     local function prog_init_smutny()
  334.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  335.  
  336.         smutny.strana = random(2)
  337.         smutny.cinnost = 0
  338.         smutny.vyraz = random(4) + 1
  339.         smutny.hybese = 0
  340.  
  341.         return function()
  342.             switch(smutny.hybese){
  343.                 [0] = function()
  344.                     if smutny.dir ~= dir_no then
  345.                         smutny.hybese = smutny.hybese + 1
  346.                     end
  347.                 end,
  348.                 [1] = function()
  349.                     if smutny.dir == dir_no then
  350.                         smutny.hybese = smutny.hybese + 1
  351.                     end
  352.                 end,
  353.             }
  354.             if room.obadva == 1 then
  355.                 smutny.vyraz = 4
  356.             else
  357.                 switch(smutny.cinnost){
  358.                     [0] = function()
  359.                         if random(100) < 1 then
  360.                             smutny.strana = 1 - smutny.strana
  361.                         end
  362.                         if random(1000) < 5 then
  363.                             smutny.cinnost = 2
  364.                         end
  365.                     end,
  366.                     [1] = function()
  367.                         if random(100) < 5 then
  368.                             smutny.cinnost = 0
  369.                         end
  370.                         if math.mod(game_getCycles(), 3) == 0 then
  371.                             smutny.strana = 1 - smutny.strana
  372.                         end
  373.                     end,
  374.                 }
  375.                 if math.mod(game_getCycles(), 3) == 0 and random(100) < 6 then
  376.                     smutny.vyraz = random(4) + 1
  377.                 end
  378.             end
  379.             if random(100) < 4 then
  380.                 smutny.afaze = smutny.strana * 5
  381.             else
  382.                 smutny.afaze = smutny.strana * 5 + smutny.vyraz
  383.             end
  384.             smutny:updateAnim()
  385.         end
  386.     end
  387.  
  388.     -- -------------------------------------------------------------
  389.     local function prog_init_plut1()
  390.         return function()
  391.             plut1.afaze = math.mod(plut1.afaze + 1, 3)
  392.             plut1:updateAnim()
  393.         end
  394.     end
  395.  
  396.     -- --------------------
  397.     local update_table = {}
  398.     local subinit
  399.     subinit = prog_init_room()
  400.     if subinit then
  401.         table.insert(update_table, subinit)
  402.     end
  403.     subinit = prog_init_veve()
  404.     if subinit then
  405.         table.insert(update_table, subinit)
  406.     end
  407.     subinit = prog_init_bublik()
  408.     if subinit then
  409.         table.insert(update_table, subinit)
  410.     end
  411.     subinit = prog_init_hadice()
  412.     if subinit then
  413.         table.insert(update_table, subinit)
  414.     end
  415.     subinit = prog_init_nasrany()
  416.     if subinit then
  417.         table.insert(update_table, subinit)
  418.     end
  419.     subinit = prog_init_smutny()
  420.     if subinit then
  421.         table.insert(update_table, subinit)
  422.     end
  423.     subinit = prog_init_plut1()
  424.     if subinit then
  425.         table.insert(update_table, subinit)
  426.     end
  427.     return update_table
  428. end
  429. local update_table = prog_init()
  430.  
  431.  
  432. -- -----------------------------------------------------------------
  433. -- Update
  434. -- -----------------------------------------------------------------
  435. function prog_update()
  436.     for key, subupdate in pairs(update_table) do
  437.         subupdate()
  438.     end
  439. end
  440.  
  441.